home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 February / PCWorld_2006-02_cd.bin / software / vyzkuste / triky / triky.exe / httrack-3.33.exe / {app} / src / htsglobal.h < prev    next >
C/C++ Source or Header  |  2005-02-05  |  11KB  |  547 lines

  1. /* ------------------------------------------------------------ */
  2. /*
  3. HTTrack Website Copier, Offline Browser for Windows and Unix
  4. Copyright (C) Xavier Roche and other contributors
  5.  
  6. This program is free software; you can redistribute it and/or
  7. modify it under the terms of the GNU General Public License
  8. as published by the Free Software Foundation; either version 2
  9. of the License, or any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  19.  
  20.  
  21. Important notes:
  22.  
  23. - We hereby ask people using this source NOT to use it in purpose of grabbing
  24. emails addresses, or collecting any other private information on persons.
  25. This would disgrace our work, and spoil the many hours we spent on it.
  26.  
  27.  
  28. Please visit our Website: http://www.httrack.com
  29. */
  30.  
  31.  
  32. /* ------------------------------------------------------------ */
  33. /* File: Global #define file                                    */
  34. /* Author: Xavier Roche                                         */
  35. /* ------------------------------------------------------------ */
  36.  
  37. // Fichier rΘunissant l'ensemble des defines
  38.  
  39. #ifndef HTTRACK_GLOBAL_DEFH
  40. #define HTTRACK_GLOBAL_DEFH
  41.  
  42. // Version
  43. #define HTTRACK_VERSION      "3.33"
  44. #define HTTRACK_VERSIONID    "3.33.15"
  45. #define HTTRACK_AFF_VERSION  "3.x"
  46. //#define HTTRACK_AFF_WARNING  "This is a BETA release of WinHTTrack Website Copier ("HTTRACK_VERSION")\nPlease report any crashes, bugs or problems"
  47.  
  48. #ifndef HTS_NOINCLUDES
  49. #ifndef _WIN32_WCE
  50. #include <stdio.h>
  51. #include <stdlib.h>
  52. #else
  53. #include <stdio.h>
  54. #include <stdlib.h>
  55. #ifdef HTS_CECOMPAT
  56. #include "cecompat.h"
  57. #else
  58. #include "celib.h"
  59. #endif
  60. #endif
  61. #endif
  62.  
  63. // DΘfinition plate-forme
  64. #include "htssystem.h"
  65. #include "htsconfig.h"
  66.  
  67. // WIN32 types
  68. #ifdef _WIN32
  69. #ifndef SIZEOF_LONG
  70. #define SIZEOF_LONG 4
  71. #define SIZEOF_LONG_LONG 8
  72. #endif
  73. #endif
  74.  
  75.  
  76. // config.h
  77. #ifdef _WIN32
  78.  
  79. // WIN32
  80. #ifndef _WIN32_WCE
  81.  
  82. #define HAVE_SYS_STAT_H 1
  83. #define HAVE_SYS_TYPES_H 1
  84. #define HAVE_SYS_STAT_H 1
  85. #ifndef DLLIB
  86. #define DLLIB 1
  87. #endif
  88. #ifndef HTS_INET6
  89. #define HTS_INET6 1
  90. #endif
  91. #ifndef S_ISREG
  92. #define S_ISREG(m) ((m) & _S_IFREG)
  93. #endif
  94.  
  95. #else
  96.  
  97. // Win32CE
  98. //#pragma runtime_checks( "s", restore )
  99. #define HTS_SPARE_MEMORY 1
  100. #define HTS_ALIGN 8
  101. #define BIGSTK static
  102. #undef DLLIB   // LoadLibrary(libssl) crashes
  103. #define NOSTRDEBUG 1
  104. #undef HTS_MAKE_KEYWORD_INDEX
  105. #ifdef HTS_CECOMPAT
  106. #define HTS_DO_NOT_USE_FTIME 1
  107. #undef HAVE_SYS_STAT_H
  108. #undef HAVE_SYS_TYPES_H
  109. #else
  110. #undef HTS_DO_NOT_USE_FTIME
  111. #define HAVE_SYS_STAT_H 1
  112. #define HAVE_SYS_TYPES_H 1
  113. #endif
  114.  
  115. #define HTS_DLOPEN 0
  116. #undef HTS_INET6
  117. #ifndef S_ISREG
  118. #define S_ISREG(m) ((m) & _S_IFREG)
  119.  
  120. #endif
  121.  
  122. #endif
  123.  
  124. #else
  125.  
  126. #include "config.h"
  127.  
  128. #ifndef FTIME
  129. #define HTS_DO_NOT_USE_FTIME
  130. #endif
  131.  
  132. #ifndef SETUID
  133. #define HTS_DO_NOT_USE_UID
  134. #endif
  135.  
  136. #ifndef HTS_LONGLONG
  137. #ifdef SIZEOF_LONG_LONG
  138. #if SIZEOF_LONG_LONG==8
  139. #define HTS_LONGLONG 1
  140. #endif
  141. #endif
  142.  
  143. #ifndef HTS_LONGLONG
  144. #ifdef __sun
  145. #define HTS_LONGLONG 0
  146. #endif
  147. #ifdef __osf__
  148. #define HTS_LONGLONG 0
  149. #endif
  150. #ifdef __linux
  151. #define HTS_LONGLONG 1
  152. #endif
  153. #ifdef _WIN32
  154. #define HTS_LONGLONG 1
  155. #endif
  156. #endif
  157. #endif
  158.  
  159. #ifdef DLLIB
  160. #define HTS_DLOPEN 1
  161. #else
  162. #define HTS_DLOPEN 0
  163. #endif
  164.  
  165. #endif
  166.  
  167. // Socket windows ou socket unix
  168. #ifdef _WIN32
  169. #undef HTS_PLATFORM
  170. #define HTS_PLATFORM 1
  171. #define HTS_WIN 1
  172.  
  173. #else
  174.  
  175. #define HTS_WIN 0
  176. #ifdef __linux
  177. #undef HTS_PLATFORM
  178. #define HTS_PLATFORM 3
  179. #endif
  180. #endif
  181.  
  182. // don't spare memory usage by default
  183. #ifndef HTS_SPARE_MEMORY
  184. #define HTS_SPARE_MEMORY 0
  185. #endif
  186.  
  187. #ifndef BIGSTK 
  188. #define BIGSTK
  189. #endif
  190.  
  191. // compatibilitΘ DOS
  192. #if HTS_WIN
  193. #define HTS_DOSNAME 1
  194. #else
  195. #define HTS_DOSNAME 0
  196. #endif
  197.  
  198. // utiliser zlib?
  199. #ifndef HTS_USEZLIB
  200. // autoload
  201. #define HTS_USEZLIB 1
  202. #endif
  203.  
  204. #ifndef HTS_INET6
  205. #define HTS_INET6 0
  206. #endif
  207.  
  208. // utiliser openssl?
  209. #ifndef HTS_USEOPENSSL
  210. // autoload
  211. #define HTS_USEOPENSSL 1
  212. #endif
  213.  
  214. #ifndef HTS_DLOPEN
  215. #define HTS_DLOPEN 1
  216. #endif
  217.  
  218. #ifndef HTS_USESWF
  219. #define HTS_USESWF 1
  220. #endif
  221.  
  222. #if HTS_WIN
  223. #else
  224. #define __cdecl
  225. #endif
  226.  
  227. #ifdef HTS_ANALYSTE_CONSOLE
  228. #undef HTS_ANALYSTE_CONSOLE
  229. #define HTS_ANALYSTE_CONSOLE 1
  230. #endif
  231.  
  232. #if HTS_ANALYSTE
  233. #else
  234. #if HTS_WIN
  235. #else
  236. #undef HTS_ANALYSTE
  237. // Analyste
  238. #define HTS_ANALYSTE 1
  239. #define HTS_ANALYSTE_CONSOLE 1
  240. #endif
  241. #endif
  242.  
  243.  
  244. /* rc file */
  245. #if HTS_WIN
  246. #define HTS_HTTRACKRC "httrackrc"
  247. #else
  248.  
  249. #ifndef HTS_ETCPATH
  250. #define HTS_ETCPATH "/etc"
  251. #endif
  252. #ifndef HTS_BINPATH
  253. #define HTS_BINPATH "/usr/bin"
  254. #endif
  255. #ifndef HTS_LIBPATH
  256. #define HTS_LIBPATH "/usr/lib"
  257. #endif
  258. #ifndef HTS_PREFIX
  259. #define HTS_PREFIX "/usr"
  260. #endif
  261.  
  262. #define HTS_HTTRACKRC ".httrackrc"
  263. #define HTS_HTTRACKCNF HTS_ETCPATH"/httrack.conf"
  264.  
  265. #ifdef DATADIR
  266. #define HTS_HTTRACKDIR DATADIR"/httrack/"
  267. #else
  268. #define HTS_HTTRACKDIR HTS_PREFIX"/share/httrack/"
  269. #endif
  270.  
  271. #endif
  272.  
  273. #if HTS_SPARE_MEMORY==0
  274. /* Gestion des tables de hashage */
  275. #define HTS_HASH_SIZE 20147
  276. /* Taille max d'une URL */
  277. #define HTS_URLMAXSIZE 1024
  278. /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
  279. #define HTS_CDLMAXSIZE 1024
  280. #else
  281. /* Gestion des tables de hashage */
  282. #define HTS_HASH_SIZE 1023
  283. /* Taille max d'une URL */
  284. #define HTS_URLMAXSIZE 256
  285. /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
  286. #define HTS_CDLMAXSIZE 1024
  287. #endif
  288.  
  289. /* Copyright (C) Xavier Roche and other contributors */
  290. #define HTTRACK_AFF_AUTHORS "[XR&CO'2005]"
  291. #define HTS_DEFAULT_FOOTER "<!-- Mirrored from %s%s by HTTrack Website Copier/"HTTRACK_AFF_VERSION" "HTTRACK_AFF_AUTHORS", %s -->"
  292. #define HTTRACK_WEB "http://www.httrack.com"
  293. #define HTS_UPDATE_WEBSITE "http://www.httrack.com/update.php3?Product=HTTrack&Version="HTTRACK_VERSIONID"&VersionStr="HTTRACK_VERSION"&Platform=%d&Language=%s"
  294.  
  295. #define H_CRLF "\x0d\x0a"
  296. #define CRLF   "\x0d\x0a"
  297. #if HTS_WIN
  298. #define LF "\x0d\x0a"
  299. #else
  300. #define LF "\x0a"
  301. #endif
  302.  
  303. /* Θquivaut α "paramΦtre vide", par exemple -F (none) */
  304. #define HTS_NOPARAM "(none)"
  305. #define HTS_NOPARAM2 "\"(none)\""
  306.  
  307. /* maximum et minimum */
  308. #define maximum(A,B) ( (A) > (B) ? (A) : (B) )
  309. #define minimum(A,B) ( (A) < (B) ? (A) : (B) )
  310.  
  311. /* chaine vide? */
  312. #define strnotempty(A) (((A)[0]!='\0') ? 1 : 0)
  313.  
  314. /* optimisation inline si possible */
  315. #ifdef __cplusplus
  316. #define HTS_INLINE inline
  317. #else
  318. #define HTS_INLINE
  319. #endif
  320.  
  321. #ifdef _WIN32
  322. #ifdef LIBHTTRACK_EXPORTS
  323. #define HTSEXT_API __declspec(dllexport)
  324. #else
  325. #define HTSEXT_API __declspec(dllimport)
  326. #endif
  327. #else
  328. #define HTSEXT_API 
  329. #endif
  330.  
  331. #ifndef HTS_LONGLONG
  332. #ifdef HTS_NO_64_BIT
  333. #define HTS_LONGLONG 0
  334. #else
  335. #define HTS_LONGLONG 1
  336. #endif
  337. #endif
  338.  
  339. // long long int? (or int)
  340. // (and int cast for system functions like malloc() )
  341.  
  342. #if HTS_LONGLONG
  343. #ifdef LLINT_FORMAT
  344.   typedef LLINT_TYPE LLint;
  345.   typedef LLINT_TYPE TStamp;
  346.   #define LLintP LLINT_FORMAT
  347. #else
  348.  #if HTS_WIN
  349.   typedef __int64 LLint;
  350.   typedef __int64 TStamp;
  351.   #define LLintP "%I64d"
  352.  #else
  353.  #if HTS_PLATFORM==0
  354.   typedef long long int LLint;
  355.   typedef long long int TStamp;
  356.   #define LLintP "%lld"
  357.  #else
  358.   typedef long long int LLint;
  359.   typedef long long int TStamp;
  360.   #define LLintP "%Ld"
  361.  #endif
  362.  #endif
  363. #endif
  364. #else
  365.  typedef int LLint;
  366.  #define LLintP "%d"
  367.  typedef double TStamp;
  368. #endif
  369.  
  370. #ifdef LFS_FLAG
  371. typedef LLint INTsys;
  372. #define INTsysP LLintP
  373. #ifdef __linux
  374. #define HTS_FSEEKO
  375. #endif
  376. #else
  377. typedef int INTsys;
  378. #define INTsysP "%d"
  379. #endif
  380.  
  381. /* Default alignement */
  382. #ifndef HTS_ALIGN
  383. #define HTS_ALIGN (sizeof(void*))
  384. #endif
  385.  
  386. /* IPV4, IPV6 and various unified structures */
  387. #define HTS_MAXADDRLEN 64
  388.  
  389. #if HTS_WIN
  390. #else
  391. #define __cdecl 
  392. #endif
  393.  
  394. /* mode pour mkdir ET chmod (accΦs aux fichiers) */
  395. #define HTS_PROTECT_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  396. #if HTS_ACCESS
  397. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
  398. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
  399. #else
  400. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR)
  401. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  402. #endif
  403.  
  404. /* vΘrifier la dΘclaration des variables prΘprocesseur */
  405. #ifndef HTS_DOSNAME
  406. #error | HTS_DOSNAME Has not been defined.
  407. #error | Set it to 1 if you are under DOS, 0 under Unix.
  408. #error | Example: place this line in you source, before includes:
  409. #error | #define HTS_DOSNAME 0
  410. #error
  411. #error
  412. #endif
  413. #ifndef HTS_ACCESS
  414. /* Par dΘfaut, accΦs α tous les utilisateurs */
  415. #define HTS_ACCESS 1
  416. #endif
  417.  
  418. /* fflush sur stdout */
  419. #define io_flush { fflush(stdout); fflush(stdin); }
  420.  
  421.  
  422.  
  423. /* HTSLib */
  424.  
  425. // Cache DNS, accΘlΦre les rΘsolution d'adresses
  426. #define HTS_DNSCACHE 1
  427.  
  428. // ID d'une pseudo-socket locale pour les file://
  429. #define LOCAL_SOCKET_ID -500000
  430.  
  431. // taille de chaque buffer (10 sockets 650 ko)
  432. #if HTS_SPARE_MEMORY==0
  433. #define TAILLE_BUFFER 65536
  434. #else
  435. #define TAILLE_BUFFER 8192
  436. #endif
  437.  
  438. #if HTS_WIN
  439. #else
  440. // use pthreads.h
  441.  
  442. #ifndef THREADS
  443. #define HTS_DO_NOT_USE_PTHREAD
  444. #endif
  445.  
  446. #ifdef HTS_DO_NOT_USE_PTHREAD
  447. #define USE_PTHREAD 0
  448. #else
  449. #define USE_PTHREAD 1
  450. #endif
  451. #endif
  452.  
  453. #if HTS_WIN
  454. #define USE_BEGINTHREAD 1
  455. #else
  456. #if USE_PTHREAD
  457. #define USE_BEGINTHREAD 1
  458. #else
  459. /* sh*t.. */
  460. #define USE_BEGINTHREAD 0
  461. #endif
  462. #endif
  463.  
  464. #ifdef _DEBUG
  465. // trace mallocs
  466. //#define HTS_TRACE_MALLOC
  467. #ifdef HTS_TRACE_MALLOC
  468. typedef unsigned long int t_htsboundary;
  469. typedef struct mlink {
  470.   char* adr;
  471.   int len;
  472.   int id;
  473.   struct mlink* next;
  474. } mlink;
  475. static const t_htsboundary htsboundary = 0xDEADBEEF;
  476. #endif
  477. #endif
  478.  
  479. /* strxxx debugging */
  480. #ifndef NOSTRDEBUG
  481. #define STRDEBUG 1
  482. #endif
  483.  
  484.  
  485. /* ------------------------------------------------------------ */
  486. /* Debugging                                                    */
  487. /* ------------------------------------------------------------ */
  488.  
  489. // dΘbuggage types
  490. #define DEBUG_SHOWTYPES 0
  491. // backing debug
  492. #define BDEBUG 0
  493. // chunk receive
  494. #define CHUNKDEBUG 0
  495. // realloc links debug
  496. #define MDEBUG 0
  497. // cache debug
  498. #define DEBUGCA 0
  499. // DNS debug
  500. #define DEBUGDNS 0
  501. // savename debug
  502. #define DEBUG_SAVENAME 0
  503. // debug robots
  504. #define DEBUG_ROBOTS 0
  505. // debug hash
  506. #define DEBUG_HASH 0
  507. // VΘrification d'intΘgritΘ
  508. #define DEBUG_CHECKINT 0
  509. // nbr sockets debug
  510. #define NSDEBUG 0
  511.  
  512. // dΘbuggage HTSLib
  513. #define HDEBUG 0
  514. // surveillance de la connexion
  515. #define CNXDEBUG 0
  516. // debuggage cookies
  517. #define DEBUG_COOK 0
  518. // dΘbuggage hard..
  519. #define HTS_WIDE_DEBUG 0
  520. // debuggage deletehttp et cie
  521. #define HTS_DEBUG_CLOSESOCK 0
  522. // debug tracage mΘmoire
  523. #define MEMDEBUG 0
  524.  
  525. // htsmain
  526. #define DEBUG_STEPS 0
  527.  
  528.  
  529. // DΘbuggage de contr⌠le
  530. #if HTS_DEBUG_CLOSESOCK
  531. #define _HTS_WIDE 1
  532. #endif
  533. #if HTS_WIDE_DEBUG
  534. #define _HTS_WIDE 1
  535. #endif
  536. #if _HTS_WIDE
  537. extern FILE* DEBUG_fp;
  538. #define DEBUG_W(A)  { if (DEBUG_fp==NULL) DEBUG_fp=fopen("bug.out","wb"); fprintf(DEBUG_fp,":>"A); fflush(DEBUG_fp); }
  539. #undef _
  540. #define _ ,
  541. #endif
  542.  
  543.  
  544.  
  545. #endif
  546.  
  547.